# 作者：Xiang Zhaoyi
# 日期：2021/6/2 下午5:10
# 工具：PyCharm
# 少了眼睛耳朵(未使用)
pkl_idx_keypoint_map = {
    0: '鼻子',
    1: '脖子',
    2: '右肩膀',
    3: '右手肘',
    4: '右手腕',
    5: '左肩膀',
    6: '左手肘',
    7: '左手腕',
    8: '右臀部',
    9: '右膝盖',
    10: '右脚踝',
    11: '左臀部',
    12: '左膝盖',
    13: '左脚踝',
}
"""用这个关系实现csv到pkl的转换，已知csv转到pkl"""
# cpp项目中得到的结点顺序和pkl之间的对应关系{pkl中的结点index：cpp中对应的结点index}——此处仅为记录，并未使用
cpp_pkl_map = {0: 10, 1: 9, 2: 8,
               3: 11, 4: 12, 5: 13,
               6: 4, 7: 3, 8: 2,
               9: 5, 10: 6, 11: 7,
               12: 1, 13: 0, 14: 0}

pkl_cpp_map = {10: 0, 9: 1, 8: 2,
               11: 3, 12: 4, 13: 5,
               4: 6, 3: 7, 2: 8,
               5: 9, 6: 10, 7: 11,
               1: 12, 0: 13}
# 与csv相比 颈变成脖子,头变成脖子(用于csv转pkl)
pkl_node = ['右脚踝x', '右脚踝y', '右脚踝c', '右膝盖x', '右膝盖y', '右膝盖c', '右臀部x', '右臀部y', '右臀部c',  # 0 1 2
            '左臀部x', '左臀部y', '左臀部c', '左膝盖x', '左膝盖y', '左膝盖c', '左脚踝x', '左脚踝y', '左脚踝c',  # 3 4 5
            '右手腕x', '右手腕y', '右手腕c', '右手肘x', '右手肘y', '右手肘c', '右肩膀x', '右肩膀y', '右肩膀c',  # 6 7 8
            '左肩膀x', '左肩膀y', '左肩膀c', '左手肘x', '左手肘y', '左手肘c', '左手腕x', '左手腕y', '左手腕c',  # 9 10 11
            '脖子x', '脖子y', '脖子c', '鼻子x', '鼻子y', '鼻子c',  # 12 13
            '头x', '头y', '头c',  # 14
            ]
"""这个是pkl的保存顺序，这个对应的就是模型输入的结点顺序"""
# pkl和csv的结点名称对应关系(用于csv转pkl)
pkl_csv_map = {
    '头': '头',  # 新增加的，和鼻子一模一样，为了可以正常训练GCN而添加的
    '鼻子': '头',
    '脖子': '颈',
    '右肩膀': '右肩',
    '右手肘': '右肘',
    '右手腕': '右手',
    '左肩膀': '左肩',
    '左手肘': '左肘',
    '左手腕': '左手',
    '右臀部': '右臀',
    '右膝盖': '右膝',
    '右脚踝': '右脚',
    '左臀部': '左臀',
    '左膝盖': '左膝',
    '左脚踝': '左脚',
}
"""这个是CSV中的保存顺序，也是项目中结点的保存顺序"""
# 一切以这个命名为准(为每个视频保存单个csv时使用)
csv_idx_keypoint_map = {
    'EN': {
        0: 'Nose',  # 这里的头就是鼻子
        1: 'Neck',
        2: 'RShoulder',
        3: 'RElbow',
        4: 'RWrist',
        5: 'LShoulder',
        6: 'LElbow',
        7: 'LWrist',
        8: 'RHip',
        9: 'RKnee',
        10: 'RAnkle',
        11: 'LHip',
        12: 'LKnee',
        13: 'LAnkle',  # 项目中就使用了前14个，顺序和这里完全一致
        14: 'REye',
        15: 'LEye',
        16: 'REar',
        17: 'LEar',
    },
    'CN': {
        0: '头',  # 这里的头就是鼻子
        1: '颈',
        2: '右肩',
        3: '右肘',
        4: '右手',
        5: '左肩',
        6: '左肘',
        7: '左手',
        8: '右臀',
        9: '右膝',
        10: '右脚',
        11: '左臀',
        12: '左膝',
        13: '左脚',
        14: '右眼',
        15: '左眼',
        16: '右耳',
        17: '左耳',
    }}
# 少了一个脖子(自己制作数据集时使用)
coco_idx_keypoint_map = {
    'EN': {
        # 0: "nose",
        # 1: "left_eye",
        # 2: "right_eye",
        # 3: "left_ear",
        # 4: "right_ear",
        # 5: "left_shoulder",
        # 6: "right_shoulder",
        # 7: "left_elbow",
        # 8: "right_elbow",
        # 9: "left_wrist",
        # 10: "right_wrist",
        # 11: "left_hip",
        # 12: "right_hip",
        # 13: "left_knee",
        # 14: "right_knee",
        # 15: "left_ankle",
        # 16: "right_ankle"
        0: "Nose",
        1: "LEye",
        2: "REye",
        3: "LEar",
        4: "REar",
        5: "LShoulder",
        6: "RShoulder",
        7: "LElbow",
        8: "RElbow",
        9: "LWrist",
        10: "RWrist",
        11: "LHip",
        12: "RHip",
        13: "LKnee",
        14: "RKnee",
        15: "LAnkle",
        16: "RAnkle"
    },
    'CN': {
        0: "头",
        1: "左眼",
        2: "右眼",
        3: "左耳",
        4: "右耳",
        5: "左肩",
        6: "右肩",
        7: "左肘",
        8: "右肘",
        9: "左手",
        10: "右手",
        11: "左臀",
        12: "右臀",
        13: "左膝",
        14: "右膝",
        15: "左脚",
        16: "右脚"
    }
}
